home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
pc_board
/
pbank21b.zip
/
BANK.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1993-06-16
|
9KB
|
353 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 1.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
String STRING002
String STRING003
String STRING004
String TSTRING005(10)
String TSTRING006(4)
;------------------------------------------------------------------------------
BOOLEAN002 = 1
INTEGER011 = 4
INTEGER001 = 60
INTEGER002 = 45
INTEGER003 = 30
INTEGER009 = 5
STRING004 = TokenStr()
BOOLEAN001 = 0
Tokenize STRING004
If (TokCount() > 2) Then
PrintLn "@X0EToo many command line arguments. Reenter.@X07"
PrintLn "@X0EBANK @X07or @X0EBANK SHOW @X07or @X0EBANK WITHDRAW nn @X07or @X0EBANK DEPOSIT nn@X07"
Else
STRING003 = 1
GetToken TSTRING006(STRING003)
While (TSTRING006(STRING003) <> "") Do
STRING003 = STRING003 + 1
GetToken TSTRING006(STRING003)
EndWhile
If (GetEnv("PBANK")) Then
Tokenize GetEnv("PBANK")
GetToken INTEGER001
GetToken INTEGER002
GetToken INTEGER003
GetToken INTEGER009
GetToken INTEGER011
GetToken BOOLEAN002
Endif
If (Psa(6)) Goto LABEL001
PrintLn "@X0CNotes PSA must be installed in PCBSM@X07."
PrintLn "@X0CPlease Notify SYSOP.@X07"
Goto LABEL010
:LABEL001
INTEGER012 = Len(INTEGER003)
INTEGER013 = Len(INTEGER002)
GetUser
If (U_Notes(INTEGER011) == "") Then
INTEGER008 = 0
Goto LABEL002
Else
INTEGER007 = 0
Tokenize U_Notes(INTEGER011)
INTEGER008 = TokCount()
If (INTEGER008 > 10) Then
PrintLn "@X0CInsufficient Bank storage space. Notify Sysop.@X07"
Goto LABEL010
Endif
For STRING003 = 1 To INTEGER008
GetToken TSTRING005(STRING003)
If (TSTRING005(STRING003) == "BANK") INTEGER007 = STRING003
Next
If (INTEGER007 > 0) Goto LABEL004
Endif
:LABEL002
If (INTEGER008 > 7) Then
PrintLn "@X0CInsufficient Bank storage space. Notify Sysop.@X07"
Else
If (InStr(U_Notes(INTEGER011), " ")) Goto LABEL003
PrintLn "@X0CInsufficient String storage space. Notify Sysop.@X07"
Goto LABEL010
:LABEL003
INTEGER007 = INTEGER008 + 1
INTEGER008 = INTEGER008 + 3
TSTRING005(INTEGER007) = "BANK"
TSTRING005(INTEGER007 + 1) = "TIME"
TSTRING005(INTEGER007 + 2) = 0
:LABEL004
Select Case (Left(TSTRING006(1), 1))
Case "S"
PrintLn "@POS:10@@X0B", TSTRING005(INTEGER007), " ", TSTRING005(INTEGER007 + 1), ": @X0E", TSTRING005(INTEGER007 + 2), " @X07min."
Goto LABEL010
Case "D"
Goto LABEL008
Case "W"
Goto LABEL009
End Select
:LABEL005
If (GrafMode() == "N") Then
PrintLn "You are unable to use the Time Bank interractively in your current node."
PrintLn "Either change your mode to GRAPHICS or ANSI or enter from the command line."
PrintLn "Syntex is: BANK SHOW to display time in bank."
PrintLn " BANK DEPOSIT nn to deposit time in bank."
PrintLn " BANK WITHDRAW nn to withdraw time from bank."
Else
BOOLEAN001 = 1
PrintLn "@CLS@@X07"
PrintLn "@X07"
PrintLn "@X07"
PrintLn "@X07 @X77 @X7F┌────────────────────────────────────────────@X7F┐@POS:79@@X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7A@BOARDNAME@ Time Bank @POS:64@@X7F│@POS:79@@X07"
PrintLn "@X0F @X08█@X78 @X70└────────────────────────────────────────────@X7F┘@POS:79@@X07"
PrintLn "@X0F @X08█@X78 @X7F┌─────────────────────┐ ┌─────────────────────────────────────@X7F┐ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7BD@X78)@X71eposit time @X7F│ @X70│ @X7BIn your Account@X78: @X7E @X78 @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7BW@X78)@X71ithdraw time @X7F│ @X7F@X70│ @X79Maximum Bank Balance@X78: @X7E @X78 @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7BH@X78)@X71elp! @X7F│ @X70│ @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7F│ @X70│ @X7EAvailable for Withdrawal@X78: @X7E @X78 @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7BQ@X78)@X74uit to @X74BBS @X7F│ @X70│ @X7EAvailable for Deposit @X78: @X7E @X78 @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70│ @X7BG@X78)@X74oodbye @X7F│ @X70│ @X79Maximum Withdrawal P/Day@X78: @X7E @X78 @X7F│ @X07"
PrintLn "@X0F @X08█@X78 @X70└─────────────────────@X7F┘ @X70└─────────────────────────────────────@X7F┘ @X07"
PrintLn "@X0F @X08█@X78 @X07"
PrintLn "@X08 █@X78 @X07"
PrintLn "@X08 █@X78 @X07"
PrintLn "@X08 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@X07"
:LABEL006
INTEGER005 = INTEGER003
INTEGER004 = TSTRING005(INTEGER007 + 2)
:LABEL007
STRING002 = ""
If (INTEGER004 > INTEGER002) INTEGER004 = INTEGER002
If (INTEGER005 > INTEGER001 - TSTRING005(INTEGER007 + 2)) INTEGER005 = INTEGER001 - TSTRING005(INTEGER007 + 2)
If (INTEGER005 > MinLeft() - INTEGER009) INTEGER005 = MinLeft() - INTEGER009
If (INTEGER005 < 0) INTEGER005 = 0
AnsiPos 53, 8
Print "@X75", TSTRING005(INTEGER007 + 2), " @X78Min @X07"
AnsiPos 58, 9
Print "@X75", INTEGER001, " @X78Min. @X07"
AnsiPos 62, 11
Print "@X75", INTEGER004, " @X78Min. @X07"
AnsiPos 62, 12
Print "@X75", INTEGER005, " @X78Min. @X07"
AnsiPos 62, 13
Print "@X75", INTEGER002, " @X78Min. @X07"
AnsiPos 0, 19
InputStr "(@X0C@TIMELEFT@ @X0Emin. left) Command", STRING002, 14, 1, Mask_AlNum(), 2 + 4 + 8 + 128 + 256 + 32
If (STRING002 == "D") Goto LABEL008
If (STRING002 == "W") Goto LABEL009
If (STRING002 == "H") Then
If (Exist(HelpPath() + "BANK")) DispFile HelpPath() + "BANK", 4 + 2 + 1
Goto LABEL005
Endif
If (STRING002 == "Q") Goto LABEL010
If (STRING002 == "G") Goto LABEL011
If (STRING002 == "") Goto LABEL010
Goto LABEL006
:LABEL008
If (BOOLEAN001 == 1) Then
INTEGER006 = INTEGER005
ClrEol
InputStr "Enter the Amount to Deposit: ", INTEGER006, 14, INTEGER012, Mask_Num(), 2 + 4 + 8 + 32
Else
INTEGER006 = TSTRING006(2)
If (INTEGER006 < 0) INTEGER006 = 0
Endif
If (INTEGER006 + TSTRING005(INTEGER007 + 2) > INTEGER001) Then
INTEGER010 = 1
ElseIf (INTEGER006 > INTEGER003) Then
INTEGER010 = 2
ElseIf (INTEGER006 > MinLeft() - INTEGER009) Then
INTEGER010 = 3
Else
TSTRING005(INTEGER007 + 2) = TSTRING005(INTEGER007 + 2) + INTEGER006
U_Notes(INTEGER011) = TSTRING005(1)
For STRING003 = 2 To INTEGER008
U_Notes(INTEGER011) = U_Notes(INTEGER011) + " " + TSTRING005(STRING003)
Next
PutUser
AdjTime -INTEGER006
INTEGER005 = INTEGER005 - INTEGER006
If (INTEGER005 < 0) Then
INTEGER005 = 0
Endif
INTEGER010 = 0
Endif
Select Case (INTEGER010)
Case 0
PrintLn "@X0CDepositing @X0E", INTEGER006, "@X0E Min@X0C to Your Account @X07"
Log "Time Bank Deposit: " + String(INTEGER006) + " Min.", 0
Case 1
PrintLn "@X0CThe maximum allowed bank time is @X0B", INTEGER001, " min. @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to Deposit More than Maximum Bank Time", 0
Case 2
PrintLn "@X0CThe Maximum daily Deposit is: @X0B", INTEGER003, " Min. @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to Exceed Max daily Deposit", 0
Case 3
PrintLn "@X0CYou must maintain @X0B", INTEGER009, " Min. for logoff. @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to store logoff allotment", 0
End Select
If (BOOLEAN001 == 1) Goto LABEL007
Goto LABEL010
:LABEL009
If (BOOLEAN001 == 1) Then
ClrEol
InputStr "Enter the Amount to Withdraw:", INTEGER006, 14, INTEGER013, Mask_Num(), 2 + 4 + 8 + 32
Else
INTEGER006 = TSTRING006(2)
If (INTEGER006 < 0) INTEGER006 = 0
Endif
If (TSTRING005(INTEGER007 + 2) == 0) Then
INTEGER010 = 1
ElseIf (INTEGER006 > TSTRING005(INTEGER007 + 2)) Then
INTEGER010 = 2
ElseIf (INTEGER006 > INTEGER002) Then
INTEGER010 = 3
Else
TSTRING005(INTEGER007 + 2) = TSTRING005(INTEGER007 + 2) - INTEGER006
U_Notes(INTEGER011) = TSTRING005(1)
For STRING003 = 2 To INTEGER008
U_Notes(INTEGER011) = U_Notes(INTEGER011) + " " + TSTRING005(STRING003)
Next
If (INTEGER006 < 0) INTEGER006 = 0
PutUser
AdjTime INTEGER006
INTEGER004 = INTEGER004 - INTEGER006
If (INTEGER004 < 0) Then
INTEGER004 = 0
Endif
INTEGER010 = 0
Endif
Select Case (INTEGER010)
Case 0
PrintLn "@X0CWithdrawing @X0E ", INTEGER006, " Min@X0C from Your Account @X07"
Log "Time Bank Withdrawal: " + String(INTEGER006) + " Min.", 0
Case 1
PrintLn "@X0CYou Must deposit time in the Bank in order to Withdraw @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to Withdraw : No Time in the Bank!", 0
Case 2
PrintLn "@X0CYou cannot withdraw more than you have. @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to withdraw more than in bank.", 0
Case 3
PrintLn "@X0CMaximum daily withdrawal is @X0B", INTEGER002, " min. @X07@BEEP@"
If (BOOLEAN002 == 1) Log "Attempted to excede max daily withdrawal.", 0
End Select
If (BOOLEAN001 == 1) Goto LABEL007
Endif
Endif
Endif
:LABEL010
End
:LABEL011
Goodbye
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 1 End
; 2 ClrEol
; 76 Goto
; 59 Let
; 5 Print
; 39 PrintLn
; 57 If
; 1 DispFile
; 1 GetUser
; 2 PutUser
; 2 AdjTime
; 8 Log
; 3 InputStr
; 3 Tokenize
; 9 GetToken
; 1 Goodbye
; 6 AnsiPos
;
;
; ■ Functions used :
;
; 1 -
; 46 +
; 8 -
; 31 ==
; 1 <>
; 9 <
; 3 <=
; 12 >
; 6 >=
; 34 !
; 6 &&
; 3 ||
; 2 Len(
; 3 Left()
; 1 InStr()
; 2 String()
; 2 Mask_Num()
; 1 Mask_AlNum()
; 3 MinLeft()
; 2 GetEnv()
; 1 Exist()
; 1 TokenStr()
; 1 GrafMode()
; 1 Psa()
; 2 HelpPath()
; 2 TokCount()
;
;------------------------------------------------------------------------------
;
; Analysis flags : WA
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
; A - Adjust online time remaining ■ 5
; Program modify the amount of online time remaining, this may
; be a way to bypass time limits
; ■ Search for : ADJTIME
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 1 While/EndWhile
; 17 If/Then or If/Then/Else
; 3 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------